\section{Ejercicio 2}

Para este ejercicio se utilizó el siguiente lote de tareas:

\begin{verbatim}
@0:
TaskCPU 1000
TaskConsola 1 200 200
TaskConsola 2 150 300
\end{verbatim}

A continuación presentamos los Diagramas de Gantt que se obtienen al correr el lote de taras en 1, 2 y 3 cores utilizando el scheduler FSCS.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej2-1core.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedFCFS - 1 Core - Penalidad 10 por Context Switch}
  \label{ej02_1core}
\end{figure}

Debido a la política de scheduling FCFS (\textit{First Come First Served}) la primer tarea que consume 1000 ticks y obliga al resto de las tareas a demorarse en iniciar su ejecución debido a que hay un solo Core.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej2-2core.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedFCFS - 2 Cores - Penalidad 10 por Context Switch}
  \label{ej02_2core}
\end{figure}

Podemos ver en la figura \ref{ej02_2core} cómo se puede aprovechar el uso de dos Cores, permitiendo que una tarea que consume muchos ciclos de clock corra al mismo tiempo que las demás. Entonces, mientras una tarea corre en un core, las otras dos pueden correr en el otro core una despues de otra. 

En este caso, como la tarea TaskCPU requiere más tiempo que las otras juntas, el tiempo hasta que todas las tareas terminan de ejecutarse coincide con el tiempo de finalización de la primer tarea.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej2-3core.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedFCFS - 3 Cores - Penalidad 10 por Context Switch}
  \label{ej02_3core}
\end{figure}

La figura \ref{ej02_3core} muestra cómo utilizando tres cores se ahorra tiempo entre las tareas 2 y 3, permitiendo que ambas se ejecuten en paralelo junto con la tarea 1. Si existieran más tareas, pueden ejecutarse después de que termine de ejecutar la tarea 2 o 3 ahorrando así tiempo de ejecución.